#pragma once

#include "TTToeState.h"

#define PLAYER_1_		'o'		// Current player
#define PLAYER_2_		'x'		// Computer or remote player

namespace SmartTTToe {
	class TTToeBoard {
	private:
		int boardSize;		// The size of the board
		int stepCount;		// Step counter
		char** boardMap;	// The board map containing 'o' or 'x'
		int** evalBoard;	// Temporal evaluation board
		int* TScore;
		int* KScore;
		void evaluateBoard(char** cells, char player);
		TTToeState* GetMaxNode();
		int randomFrom(const int min, const int max);

	public:
		TTToeBoard(int size);
		~TTToeBoard(void);
		int insert(int x, int y, bool turn);
	};
}	// namespace SmartTTToe

